<?

/* Inicializo
*********************************************************************************************************************/

include_once($_SERVER['DOCUMENT_ROOT'] . "/includes/loader.inc.php");

// Instancio la clase
$contactos = new Contactos();

// Chequeo los permisos
$permiso = true;

// Campos editables
$fields = array('empresa', 'contacto', 'telefono', 'mail', 'direccion', 'web', 'comentarios');

// Tipos de servicios
$tipos = array(
	'contactos' => array('singular' => 'contacto', 'plural' => 'contactos'),
);

/* Obtengo los datos
*********************************************************************************************************************/

// Tomo la accion
$accion = 'listar';
if ($_REQUEST['mode'])
	$accion = addslashes($_REQUEST['mode']);

// Tomo el tipo
$tipo = 'contactos';
if ($_REQUEST['tipo'])
	$tipo = addslashes($_REQUEST['tipo']);
	
// Tomo los id de los items a tratar
$labels = is_array($_REQUEST['id']) ? $_REQUEST['id'] : explode(',', addslashes($_REQUEST['id']));
	
// Tomo los parametros
if ($_REQUEST['params']) {
	$params_string = addslashes($_REQUEST['params']);
	$params = Funciones::getparams($params_string);
}

// Tomo los datos del formulario
if ($_REQUEST['data'])
	$data = $_REQUEST['data'];

// Tomo el aviso, en caso de haberlo
$aviso = json_decode($session->getFlash(), true);
$verbo = $aviso['accion'];
if ($aviso['exito'])
	if (count($aviso['exito']) > 1)
		$exito_global = count($aviso['exito']) . ' servicios se han podido ' . $verbo . ' con &eacute;xito';




/* Listar
*********************************************************************************************************************/

if ($accion == 'listar') {

	// Aplico los filtros
	foreach ($criterios as $key_criterio => $value_criterio)
		if ($params[$key_criterio])
			$filtros[$key_criterio] = str_replace('|param|', $params[$key_criterio], $value_criterio['filtro']);

	// Armo las opciones para la funcion listar
	$opciones  = array(
		'rpp' => ($params['items']) ? $params['items'] : 1000,
		'page' => ($params['pagina']) ? $params['pagina'] : 1,
		'filtros' => $filtros
	);

	// Obtengo el listado
	$listado['contacto'] = $contactos->listar($opciones);
	
	foreach($tipos as $valor) {
		// Agrego el enlace al detalle
		foreach($listado[$valor['singular']]['data'] as $key => $value)
			$listado[$valor['singular']]['data'][$key]['link'] = '/ss/' . $valor['plural'] . '/ver/' . $value['id_' . $valor['singular']];
	}

}




/* Ver
*********************************************************************************************************************/

if ($accion == 'ver') {
	foreach ($labels as $label)
		if ($item = $contactos->get($label))
			$items[$label] = $item;
}






/* Editar
*********************************************************************************************************************/

if ($accion == 'editar') {
	if (!current($labels)) {
		// Formulario para crear un item
		$form = 'agregar';
		$items[] = array();
	} else {
		// Formulario para modificar los items seleccionados
		$form = 'modificar';
		foreach ($labels as $label)
			if ($item = $contactos->get($label))
				$items[$label] = $item;
	}
}




/* Agregar
*********************************************************************************************************************/

if ($accion == 'agregar') {
	
	$aviso['accion'] = 'agregar';

	// Ordeno la informacion del formulario
	$cant = count($data['fields'][current($fields)]);
	for ($i = 0; $i < $cant; $i++)
		foreach($fields as $field)
			$items[$i][$field] = $data['fields'][$field][$i];
	
	// Agrego los items
	foreach ($items as $item) {
		if (!$id = $contactos->agregar($item))
			$aviso['error'][] = array('texto' => $contactos->error());
		else
			$aviso['exito'][] = array('texto' => 'El ' . $tipos[$tipo]['singular'] . ' se ha podido agregar con &eacute;xito');
	}
	$session->setFlash(json_encode($aviso));
	header("Location: /ss/contactos/ver/$id");
	exit;
	
}




/* Eliminar
*********************************************************************************************************************/

if ($accion == 'eliminar') {
	$aviso['accion'] = 'eliminar';
	foreach ($labels as $label) {
		if (!$contactos->eliminar($label)) {
			$aviso['error'][] = array('item' => $label, 'texto' => ${$tipo}->error());
		} else {
			$aviso['exito'][] = array('item' => $label, 'texto' => 'El ' . $tipos[$tipo]['singular'] . ' se ha podido eliminar con &eacute;xito');
		}
	}
	$session->setFlash(json_encode($aviso));
	header("Location: /ss/contactos/");
	exit;
}





/* Modificar
*********************************************************************************************************************/

if ($accion == 'modificar') {

	// Ordeno la informacion del formulario
	foreach($fields as $field)
		foreach($data['fields'][$field] as $key => $value)
			$items[$key][$field] = $value;
			
	// Modifico los items
	foreach ($items as $id => $item) {
		if (!$result = $contactos->modificar($id, $item))
			$aviso['error'][] = array('id' => $id, 'texto' => $contactos->error());
		else
			$aviso['exito'][] = array('texto' => 'El ' . $tipos[$tipo]['singular'] . ' se ha podido modificar con &eacute;xito');
	}
	$aviso['accion'] = $accion;
	$session->setFlash(json_encode($aviso));
	header("Location: /ss/contactos/");
	exit;
	
}

/* CSV
*********************************************************************************************************************/

if ($accion == 'csv') {
	$csv = $contactos->listar();
	
	foreach($csv['data'] as $item) {
		echo implode(',', $item) . "\n";
	}	
	exit;
}


// Interfaz
include($_SERVER['DOCUMENT_ROOT'] . '/includes/tpl/header.tpl.php');
include($_SERVER['DOCUMENT_ROOT'] . '/includes/tpl/contactos.tpl.php');
include($_SERVER['DOCUMENT_ROOT'] . '/includes/tpl/footer.tpl.php');

?>
